gpt4 book ai didi

Python 多处理错误

转载 作者:行者123 更新时间:2023-11-30 23:30:09 27 4
gpt4 key购买 nike

我是 Python 多重处理新手。我有下面的代码,非常简单。但它不起作用!它只打印开始和结束。它从不打印“Into Run”。我缺少什么?我在 Windows 上,Python 2.6

import logging, sys
from multiprocessing import Process

class ZincDataExtract(Process):
def __init__(self, sources=None):
Process.__init__(self)
if sources is None:
self.src = 'Everything'
else:
self.src = sources

def run(self):
print "Into Run: " + str(self.src)
sys.stdout.flush()

def main():

from datetime import datetime
cobDate = datetime.strptime('2013-11-29', '%Y-%m-%d').date()

logging.info("Start: " + datetime.now().strftime('%Y-%m-%d %H:%M:%S'))

procs = []
sources='CRE,Mortgage,OGRE,RV2,TDR,Tiger,CIDW'
p1 = Process(target=ZincDataExtract, args=(sources))
procs.append(p1)
p1.start()

sources='RAM'
p2 = Process(target=ZincDataExtract, args=(sources))
procs.append(p2)
p2.start()

for p in procs:
p.join()

logging.info("End: " + datetime.now().strftime('%Y-%m-%d %H:%M:%S'))

最佳答案

当您扩展 multiprocessing.Process 类时,您应该将 ZincDataExtract 视为该类本身。您已经在调用父类(super class)的 __init__() 方法(第 5 行),因此您不需要实例化两个 Process 类。

要使代码正常工作,请更改以下行:

p1 = Process(target=ZincDataExtract, args=(sources))
...
p2 = Process(target=ZincDataExtract, args=(sources))

致:

p1 = ZincDataExtract(sources)
...
p2 = ZincDataExtract(sources)

这将创建两个 ZincDataExtract 实例,而不是两个 Process 实例,并且代码将起作用!

关于Python 多处理错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20803813/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com