我有一个进程正在读取文件(使用file.read())和一个正在写入同一文件的进程(file.write()).问题是它不起作用 - 我没有错误,但它们无法同时运行.我已经尝试使读取和写入操作无阻塞,然后刷新流,如下所示:
fcntl.fcntl(file, fcntl.F_SETFL, os.O_NONBLOCK)
file.write(msg)
file.flush()
Run Code Online (Sandbox Code Playgroud)
我完全误解了吗?如何从不同的进程中完成一个文件的写入和读取?
我想知道是否有一种简单的方法来迭代fd_set?我想这样做的原因是不必遍历所有连接的套接字,因为select()改变这些fd_sets只包括我感兴趣的那些.我也知道使用一种不打算直接访问的类型的实现通常是一个坏主意,因为它可能在不同的系统中有所不同.但是,我需要一些方法来做到这一点,而且我的想法已经不多了.所以,我的问题是:
如何遍历fd_set?如果这是一个非常糟糕的做法,除了循环所有连接的套接字之外,还有其他方法可以解决我的"问题"吗?
谢谢
我已经阅读了有关python的线程的文档,并且我已经了解了以下内容应该成立:您可以访问(读取)任何PoD或python特定对象(例如数组)而不会导致多线程失败程序同时尝试同样的事情,但你不能改变它们并接受线程完整性.
我的问题是关于课程.我有一个服务器将数据库访问委托给不同的线程,但是我希望它们能够访问处理响应生成的类的实例.但是,我想知道这个类是否是线程安全的(我希望避免创建多个实例),线程不会更改任何实例变量(即self.something = (something))每个函数都使用自己的局部变量(它们确实访问类实例变量但是不要改变它们,所以总结一下:我的问题是,如果许多线程可以使用相同的实例并同时调用函数.
我有一个使用select.select()的服务器应用程序,现在我正在尝试向其添加SSL,但是在收听"原始"套接字时出现以下错误:
ValueError: file descriptor cannot be a negative integer (-1)
Run Code Online (Sandbox Code Playgroud)
所以我想我会在select中使用ssl.wrap_socket返回的ssl流.这样做,它不会返回任何错误但它也不起作用 - 我不确定问题是什么,我做了很多研究并遇到了类似问题的帖子,但我发现没有对此的解决方案.
真的很感激任何帮助.