相关疑难解决方法(0)

处理来自多个进程的单个文件

我有一个大文本文件,我想处理每一行(做一些操作)并将它们存储在数据库中.由于单个简单程序花费的时间太长,我希望它可以通过多个进程或线程来完成.每个线程/进程应从该单个文件中读取不同的数据(不同的行),并对其数据(行)执行一些操作并将它们放入数据库中,以便最终处理完所有数据并进行处理.数据库与我需要的数据一起转储.

但我无法弄清楚如何处理这个问题.

python multithreading multiprocessing

67
推荐指数
2
解决办法
4万
查看次数

Python多处理安全地写入文件

我正在尝试解决一个涉及大量子问题的大数值问题,我正在使用Python的多处理模块(特别是Pool.map)将不同的独立子问题拆分到不同的核心上.每个子问题涉及计算大量的子子问题,我试图通过将它们存储到文件中来有效地记忆这些结果,如果它们还没有被任何进程计算,否则跳过计算并只读取文件中的结果.

我有文件的并发问题:不同的进程有时检查是否已经计算了子子问题(通过查找存储结果的文件),看到它没有,运行计算,然后尝试同时将结果写入同一文件.我该如何避免写这样的碰撞?

python io mutex multiprocessing

59
推荐指数
1
解决办法
5万
查看次数

使用多处理写入文件

我在python中遇到以下问题.

我需要并行进行一些计算,我需要在文件中顺序编写结果.所以我创建了一个接收multiprocessing.Queue文件句柄的函数,进行计算并在文件中打印结果:

import multiprocessing
from multiprocessing import Process, Queue
from mySimulation import doCalculation   

# doCalculation(pars) is a function I must run for many different sets of parameters and collect the results in a file

def work(queue, fh):
while True:
    try:
        parameter = queue.get(block = False)
        result = doCalculation(parameter) 
        print >>fh, string
    except:
        break


if __name__ == "__main__":
    nthreads = multiprocessing.cpu_count()
    fh = open("foo", "w")
    workQueue = Queue()
    parList = # list of conditions for which I want to …
Run Code Online (Sandbox Code Playgroud)

python queue file-io multiprocessing

12
推荐指数
2
解决办法
2万
查看次数

使用线程和进程并发写入同一文件

什么是正确的解决方案,以确保在使用许多线程和进程时文件永远不会被破坏.

线程版本,关心打开错误.

lock = threading.RLock()
with lock:
   try:
     f = open(file, 'a')
     try:
        f.write('sth')
     finally:
        f.close() # try close in any circumstances if open passed
   except:
     pass # when open failed
Run Code Online (Sandbox Code Playgroud)

对于进程,我猜必须使用multiprocessing.Lock

但如果我想要2个进程,并且第一个进程拥有2个线程(每个进程使用一个文件)

只有理论,但我想知道如何将同步与线程和进程混合.线程是否从进程"继承"它,所以只需要进程之间的同步?

2.我不确定上面的代码是否需要嵌套尝试以防写入失败,我们想要关闭打开的文件(如果在锁定释放后它将保持打开状态)

python multithreading synchronization multiprocessing

9
推荐指数
1
解决办法
7222
查看次数