gpt4 book ai didi

python - python,多线程,可以在普通文件上安全地使用pandas “to_csv”吗?

转载 作者:行者123 更新时间:2023-12-03 13:19:14 24 4
gpt4 key购买 nike

我有一些很好用的代码。这是一个while循环,它遍历日期列表,在HDD上查找与这些日期相对应的文件,对这些文件进行一些计算,然后使用以下命令输出到“results.csv”文件:

my_df.to_csv("results.csv",mode = 'a')

我想知道为每个日期创建一个新线程,然后一次在多个日期的while循环中调用这些东西是否安全?

我的密码:
import datetime, time, os
import sys
import threading
import helperPY #a python file containing the logic I need

class myThread (threading.Thread):
def __init__(self, threadID, name, counter,sn, m_date):
threading.Thread.__init__(self)
self.threadID = threadID
self.name = name
self.counter = counter
self.sn = sn
self.m_date = m_date
def run(self):
print "Starting " + self.name
m_runThis(sn, m_date)
print "Exiting " + self.name

def m_runThis(sn, m_date):
helperPY.helpFn(sn,m_date) #this is where the "my_df.to_csv()" is called

sn = 'XXXXXX'
today=datetime.datetime(2016,9,22) #
yesterday=datetime.datetime(2016,6,13)

threadList = []
i_threadlist=0
while(today>yesterday):
threadList.append(myThread(i_threadlist, str(today), i_threadlist,sn,today))
threadList[i_threadlist].start()
i_threadlist = i_threadlist +1
today = today-datetime.timedelta(1)

最佳答案

在多个线程中写入文件是不安全的。但是您可以创建一个lock来保护该操作,同时让其余操作并行运行。您的to_csv未显示,但是您可以创建锁

csv_output_lock = threading.Lock()

并将其传递给 helperPY.helpFn。当您开始操作时,请执行
with csv_output_lock:
my_df.to_csv("results.csv",mode = 'a')

您可以并行执行其他操作-当然要遵守GIL-但文件访问受到保护。

关于python - python,多线程,可以在普通文件上安全地使用pandas “to_csv”吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39797340/

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