Sch*_*tti 12 python multithreading file
我有两个线程,一个写入文件,另一个周期性地将文件移动到另一个位置.写入总是open在写入消息之前调用,并close在写入消息之后调用.搬家公司使用shutil.move来搬家.
我看到第一次移动完成后,编写器无法再写入文件,即第一次移动后文件的大小始终为0.难道我做错了什么?
Ale*_*lli 27
锁定是一种可能的解决方案,但我更喜欢通过单个独立线程处理每个外部资源(包括文件)的一般体系结构.其他线程将工作请求发送到Queue.Queue实例上的专用线程(如果需要返回结果,则提供它们自己的单独队列作为工作请求参数的一部分),专用线程花费大部分时间等待on .geton该队列以及何时获取请求并继续执行(并在需要时返回传入队列中的结果).
我已经提供了这种方法的详细示例,例如"Python in a Nutshell".Python的Queue本质上是线程安全的,可以极大地简化您的生活.
这种架构的优点之一是,如果您决定将某些工作切换到单独的流程而不是单独的线程(例如,利用多个核心),它可以平滑地转换为多处理 - multiprocessing提供自己的类似工作Queue类型像丝绸一样顺利过渡;-).
当两个线程访问相同的资源时,会发生奇怪的事情.为避免这种情况,请始终锁定资源.Python方便threading.Lock,以及其他一些工具(参见threading模块文档).
| 归档时间: |
|
| 查看次数: |
23241 次 |
| 最近记录: |