我是 python 多进程的新手,我想了解为什么我的代码不会终止(可能是僵尸或死锁)以及如何修复它。这些createChain
函数还执行一个 for 循环并返回一个元组:(value1, value2)
。在createChain
函数内部还有对其他函数的其他调用。我不认为发布createChain
函数代码会有所帮助,因为在该函数内部我没有做有关多进程的事情。我试图将进程设置为守护进程,但仍然无法正常工作。奇怪的想法是,如果我将 ie 的值降低maxChains
到 500 或 100 就可以了。
我只是希望该过程执行一些繁重的任务并将结果放入数据类型中。
我的python版本是2.7
def createTable(chainsPerCore, q, chainLength):
for chain in xrange(chainsPerCore):
q.put(createChain(chainLength, chain))
def initTable():
maxChains = 1000
chainLength = 10000
resultsQueue = JoinableQueue()
numOfCores = cpu_count()
chainsPerCore = maxChains / numOfCores
processes = [Process(target=createTable, args=(chainsPerCore, resultsQueue, chainLength,)) for x in range(numOfCores)]
for p in processes:
# p.daemon = True
p.start()
# Wait for hashing cores to finish
for p in processes:
p.join()
resultsQueue.task_done()
temp = [resultsQueue.get() for p in processes]
print temp