2005年07月28日 星期四 00:58
各位兄弟, 用什么方法防止同一个脚本的多个实例运行? Thanks. DIrk http://www.dirkye.com
2005年07月28日 星期四 14:28
方法很多,不过不知道那些是跨平台的。如windows下使用dde,使用mutex之类的。在linux可以创建一个进程序id文件,新的实例先查找一下。 通用的可以考虑使用socket。第一个实例启动时先创建一个socket server,后续的实例先与其进行联接,联接上就表明已经有实例,就不再启动。 在 05-7-28,DIrk<archive.it at gmail.com> 写道: > 各位兄弟, > > 用什么方法防止同一个脚本的多个实例运行? > > Thanks. > > DIrk > http://www.dirkye.com > > _______________________________________________ > python-chinese list > python-chinese at lists.python.cn > http://python.cn/mailman/listinfo/python-chinese > > > -- I like python! My Donews Blog: http://www.donews.net/limodou New Google Maillist: http://groups-beta.google.com/group/python-cn
2005年07月28日 星期四 14:43
limodou,id文件的方法我听说,只是不知道该怎样建。 是不是就是在程序里面加一行 f = file('id_filename', 'w') 然后到程序退出的时候再 f.close() os.unlink('id_filename') On 7/28/05, limodou <limodou at gmail.com> wrote: > 方法很多,不过不知道那些是跨平台的。如windows下使用dde,使用mutex之类的。在linux可以创建一个进程序id文件,新的实例先查找一下。 > > 通用的可以考虑使用socket。第一个实例启动时先创建一个socket server,后续的实例先与其进行联接,联接上就表明已经有实例,就不再启动。 > > 在 05-7-28,DIrk<archive.it at gmail.com> 写道: > > 各位兄弟, > > > > 用什么方法防止同一个脚本的多个实例运行? > > > > Thanks. > > > > DIrk > > http://www.dirkye.com > > > > _______________________________________________ > > python-chinese list > > python-chinese at lists.python.cn > > http://python.cn/mailman/listinfo/python-chinese > > > > > > > > > -- > I like python! > My Donews Blog: http://www.donews.net/limodou > New Google Maillist: http://groups-beta.google.com/group/python-cn > > _______________________________________________ > python-chinese list > python-chinese at lists.python.cn > http://python.cn/mailman/listinfo/python-chinese > > >
2005年07月28日 星期四 14:47
谁有FREE的好空间啊,谢谢了!! 在 05-7-28,shhgs<shhgs.efhilt at gmail.com> 写道: > limodou,id文件的方法我听说,只是不知道该怎样建。 > > 是不是就是在程序里面加一行 > f = file('id_filename', 'w') > 然后到程序退出的时候再 > f.close() > os.unlink('id_filename') > > > > On 7/28/05, limodou <limodou at gmail.com> wrote: > > 方法很多,不过不知道那些是跨平台的。如windows下使用dde,使用mutex之类的。在linux可以创建一个进程序id文件,新的实例先查找一下。 > > > > 通用的可以考虑使用socket。第一个实例启动时先创建一个socket server,后续的实例先与其进行联接,联接上就表明已经有实例,就不再启动。 > > > > 在 05-7-28,DIrk<archive.it at gmail.com> 写道: > > > 各位兄弟, > > > > > > 用什么方法防止同一个脚本的多个实例运行? > > > > > > Thanks. > > > > > > DIrk > > > http://www.dirkye.com > > > > > > _______________________________________________ > > > python-chinese list > > > python-chinese at lists.python.cn > > > http://python.cn/mailman/listinfo/python-chinese > > > > > > > > > > > > > > > -- > > I like python! > > My Donews Blog: http://www.donews.net/limodou > > New Google Maillist: http://groups-beta.google.com/group/python-cn > > > > _______________________________________________ > > python-chinese list > > python-chinese at lists.python.cn > > http://python.cn/mailman/listinfo/python-chinese > > > > > > > > _______________________________________________ > python-chinese list > python-chinese at lists.python.cn > http://python.cn/mailman/listinfo/python-chinese > > > -- 苏州长风网络 联系电话:0512-62216515 联系人:金先生 QQ:104609351 MSN:kinnsei1 at hotmail.com skype:kinnsei98
2005年07月28日 星期四 15:01
这样不够,应该保存进程的ID。在我的blog中有一篇是讲这个的: http://blog.donews.com/limodou/archive/2004/12/28/218177.aspx 不过这个方法只适用于*nix。 在 05-7-28,shhgs<shhgs.efhilt at gmail.com> 写道: > limodou,id文件的方法我听说,只是不知道该怎样建。 > > 是不是就是在程序里面加一行 > f = file('id_filename', 'w') > 然后到程序退出的时候再 > f.close() > os.unlink('id_filename') > > > > On 7/28/05, limodou <limodou at gmail.com> wrote: > > 方法很多,不过不知道那些是跨平台的。如windows下使用dde,使用mutex之类的。在linux可以创建一个进程序id文件,新的实例先查找一下。 > > > > 通用的可以考虑使用socket。第一个实例启动时先创建一个socket server,后续的实例先与其进行联接,联接上就表明已经有实例,就不再启动。 > > > > 在 05-7-28,DIrk<archive.it at gmail.com> 写道: > > > 各位兄弟, > > > > > > 用什么方法防止同一个脚本的多个实例运行? > > > > > > Thanks. > > > > > > DIrk > > > http://www.dirkye.com > > > > > > _______________________________________________ > > > python-chinese list > > > python-chinese at lists.python.cn > > > http://python.cn/mailman/listinfo/python-chinese > > > > > > > > > > > > > > > -- > > I like python! > > My Donews Blog: http://www.donews.net/limodou > > New Google Maillist: http://groups-beta.google.com/group/python-cn > > > > _______________________________________________ > > python-chinese list > > python-chinese at lists.python.cn > > http://python.cn/mailman/listinfo/python-chinese > > > > > > > -- I like python! My Donews Blog: http://www.donews.net/limodou New Google Maillist: http://groups-beta.google.com/group/python-cn
2005年07月28日 星期四 22:44
我现在的程序就是使用了pid文件,并在进程控制器中根据pid文件检测进程是否存在,在大部分时候都运行的都不错,但有时候总会重复运行致使抢占资源引起冲突。 我想,可能是我检查pid的方法有问题,我是使用os.popen开启一个管道,通过ps pid | grep | awk方式检查指定pid是否在运行,在Python中不知道有什么更好的进程检测方法? Thanks. On 7/28/05, limodou <limodou at gmail.com> wrote: > 这样不够,应该保存进程的ID。在我的blog中有一篇是讲这个的: > > http://blog.donews.com/limodou/archive/2004/12/28/218177.aspx > > 不过这个方法只适用于*nix。 > > 在 05-7-28,shhgs<shhgs.efhilt at gmail.com> 写道: > > limodou,id文件的方法我听说,只是不知道该怎样建。 > > > > 是不是就是在程序里面加一行 > > f = file('id_filename', 'w') > > 然后到程序退出的时候再 > > f.close() > > os.unlink('id_filename') > > > > > > > > On 7/28/05, limodou <limodou at gmail.com> wrote: > > > 方法很多,不过不知道那些是跨平台的。如windows下使用dde,使用mutex之类的。在linux可以创建一个进程序id文件,新的实例先查找一下。 > > > > > > 通用的可以考虑使用socket。第一个实例启动时先创建一个socket server,后续的实例先与其进行联接,联接上就表明已经有实例,就不再启动。 > > > > > > 在 05-7-28,DIrk<archive.it at gmail.com> 写道: > > > > 各位兄弟, > > > > > > > > 用什么方法防止同一个脚本的多个实例运行? > > > > > > > > Thanks. > > > > > > > > DIrk > > > > http://www.dirkye.com > > > > > > > > _______________________________________________ > > > > python-chinese list > > > > python-chinese at lists.python.cn > > > > http://python.cn/mailman/listinfo/python-chinese > > > > > > > > > > > > > > > > > > > > > -- > > > I like python! > > > My Donews Blog: http://www.donews.net/limodou > > > New Google Maillist: http://groups-beta.google.com/group/python-cn > > > > > > _______________________________________________ > > > python-chinese list > > > python-chinese at lists.python.cn > > > http://python.cn/mailman/listinfo/python-chinese > > > > > > > > > > > > > > -- > I like python! > My Donews Blog: http://www.donews.net/limodou > New Google Maillist: http://groups-beta.google.com/group/python-cn > > _______________________________________________ > python-chinese list > python-chinese at lists.python.cn > http://python.cn/mailman/listinfo/python-chinese > > >
2005年07月28日 星期四 23:10
如果你的程序存在并发是有可能的,会有资源竞争的冲突。那只能想法子使用原子操作,如信号灯,文件加锁什么的。不过增加了复杂性了。 在 05-7-28,DIrk<archive.it at gmail.com> 写道: > 我现在的程序就是使用了pid文件,并在进程控制器中根据pid文件检测进程是否存在,在大部分时候都运行的都不错,但有时候总会重复运行致使抢占资源引起冲突。 > > 我想,可能是我检查pid的方法有问题,我是使用os.popen开启一个管道,通过ps pid | grep | > awk方式检查指定pid是否在运行,在Python中不知道有什么更好的进程检测方法? > > Thanks. > > > > On 7/28/05, limodou <limodou at gmail.com> wrote: > > 这样不够,应该保存进程的ID。在我的blog中有一篇是讲这个的: > > > > http://blog.donews.com/limodou/archive/2004/12/28/218177.aspx > > > > 不过这个方法只适用于*nix。 > > > > 在 05-7-28,shhgs<shhgs.efhilt at gmail.com> 写道: > > > limodou,id文件的方法我听说,只是不知道该怎样建。 > > > > > > 是不是就是在程序里面加一行 > > > f = file('id_filename', 'w') > > > 然后到程序退出的时候再 > > > f.close() > > > os.unlink('id_filename') > > > > > > > > > > > > On 7/28/05, limodou <limodou at gmail.com> wrote: > > > > 方法很多,不过不知道那些是跨平台的。如windows下使用dde,使用mutex之类的。在linux可以创建一个进程序id文件,新的实例先查找一下。 > > > > > > > > 通用的可以考虑使用socket。第一个实例启动时先创建一个socket server,后续的实例先与其进行联接,联接上就表明已经有实例,就不再启动。 > > > > > > > > 在 05-7-28,DIrk<archive.it at gmail.com> 写道: > > > > > 各位兄弟, > > > > > > > > > > 用什么方法防止同一个脚本的多个实例运行? > > > > > > > > > > Thanks. > > > > > > > > > > DIrk > > > > > http://www.dirkye.com > > > > > > > > > > _______________________________________________ > > > > > python-chinese list > > > > > python-chinese at lists.python.cn > > > > > http://python.cn/mailman/listinfo/python-chinese > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > I like python! > > > > My Donews Blog: http://www.donews.net/limodou > > > > New Google Maillist: http://groups-beta.google.com/group/python-cn > > > > > > > > _______________________________________________ > > > > python-chinese list > > > > python-chinese at lists.python.cn > > > > http://python.cn/mailman/listinfo/python-chinese > > > > > > > > > > > > > > > > > > > > > -- > > I like python! > > My Donews Blog: http://www.donews.net/limodou > > New Google Maillist: http://groups-beta.google.com/group/python-cn > > > > _______________________________________________ > > python-chinese list > > python-chinese at lists.python.cn > > http://python.cn/mailman/listinfo/python-chinese > > > > > > > -- I like python! My Donews Blog: http://www.donews.net/limodou New Google Maillist: http://groups-beta.google.com/group/python-cn
2005年07月28日 星期四 23:15
看了你的文章,修改了一下程序,这几天看一下运行情况。 我原来是使用ps列出所有进程,使用grep过滤出pid的行,再用awk过滤,这种过滤机制是不正确的。事实上我应该像你的文章中说的那样,ps专门有参数检查某个pid是否存在,简单的检查就可以了,已修改成这种方式,但愿不再有问题。 Thanks. On 7/28/05, limodou <limodou at gmail.com> wrote: > 如果你的程序存在并发是有可能的,会有资源竞争的冲突。那只能想法子使用原子操作,如信号灯,文件加锁什么的。不过增加了复杂性了。 > > 在 05-7-28,DIrk<archive.it at gmail.com> 写道: > > 我现在的程序就是使用了pid文件,并在进程控制器中根据pid文件检测进程是否存在,在大部分时候都运行的都不错,但有时候总会重复运行致使抢占资源引起冲突。 > > > > 我想,可能是我检查pid的方法有问题,我是使用os.popen开启一个管道,通过ps pid | grep | > > awk方式检查指定pid是否在运行,在Python中不知道有什么更好的进程检测方法? > > > > Thanks. > > > > > > > > On 7/28/05, limodou <limodou at gmail.com> wrote: > > > 这样不够,应该保存进程的ID。在我的blog中有一篇是讲这个的: > > > > > > http://blog.donews.com/limodou/archive/2004/12/28/218177.aspx > > > > > > 不过这个方法只适用于*nix。 > > > > > > 在 05-7-28,shhgs<shhgs.efhilt at gmail.com> 写道: > > > > limodou,id文件的方法我听说,只是不知道该怎样建。 > > > > > > > > 是不是就是在程序里面加一行 > > > > f = file('id_filename', 'w') > > > > 然后到程序退出的时候再 > > > > f.close() > > > > os.unlink('id_filename') > > > > > > > > > > > > > > > > On 7/28/05, limodou <limodou at gmail.com> wrote: > > > > > 方法很多,不过不知道那些是跨平台的。如windows下使用dde,使用mutex之类的。在linux可以创建一个进程序id文件,新的实例先查找一下。 > > > > > > > > > > 通用的可以考虑使用socket。第一个实例启动时先创建一个socket server,后续的实例先与其进行联接,联接上就表明已经有实例,就不再启动。 > > > > > > > > > > 在 05-7-28,DIrk<archive.it at gmail.com> 写道: > > > > > > 各位兄弟, > > > > > > > > > > > > 用什么方法防止同一个脚本的多个实例运行? > > > > > > > > > > > > Thanks. > > > > > > > > > > > > DIrk > > > > > > http://www.dirkye.com > > > > > > > > > > > > _______________________________________________ > > > > > > python-chinese list > > > > > > python-chinese at lists.python.cn > > > > > > http://python.cn/mailman/listinfo/python-chinese > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > I like python! > > > > > My Donews Blog: http://www.donews.net/limodou > > > > > New Google Maillist: http://groups-beta.google.com/group/python-cn > > > > > > > > > > _______________________________________________ > > > > > python-chinese list > > > > > python-chinese at lists.python.cn > > > > > http://python.cn/mailman/listinfo/python-chinese > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > I like python! > > > My Donews Blog: http://www.donews.net/limodou > > > New Google Maillist: http://groups-beta.google.com/group/python-cn > > > > > > _______________________________________________ > > > python-chinese list > > > python-chinese at lists.python.cn > > > http://python.cn/mailman/listinfo/python-chinese > > > > > > > > > > > > > > -- > I like python! > My Donews Blog: http://www.donews.net/limodou > New Google Maillist: http://groups-beta.google.com/group/python-cn > > _______________________________________________ > python-chinese list > python-chinese at lists.python.cn > http://python.cn/mailman/listinfo/python-chinese > > >
2005年07月28日 星期四 23:28
那样只是提高检查的速度,竞争还是会存在的,只不过可能时间快,效率会好一些。 在 05-7-28,DIrk<archive.it at gmail.com> 写道: > 看了你的文章,修改了一下程序,这几天看一下运行情况。 > > 我原来是使用ps列出所有进程,使用grep过滤出pid的行,再用awk过滤,这种过滤机制是不正确的。事实上我应该像你的文章中说的那样,ps专门有参数检查某个pid是否存在,简单的检查就可以了,已修改成这种方式,但愿不再有问题。 > > Thanks. > > > On 7/28/05, limodou <limodou at gmail.com> wrote: > > 如果你的程序存在并发是有可能的,会有资源竞争的冲突。那只能想法子使用原子操作,如信号灯,文件加锁什么的。不过增加了复杂性了。 > > > > 在 05-7-28,DIrk<archive.it at gmail.com> 写道: > > > 我现在的程序就是使用了pid文件,并在进程控制器中根据pid文件检测进程是否存在,在大部分时候都运行的都不错,但有时候总会重复运行致使抢占资源引起冲突。 > > > > > > 我想,可能是我检查pid的方法有问题,我是使用os.popen开启一个管道,通过ps pid | grep | > > > awk方式检查指定pid是否在运行,在Python中不知道有什么更好的进程检测方法? > > > > > > Thanks. > > > > > > > > > > > > On 7/28/05, limodou <limodou at gmail.com> wrote: > > > > 这样不够,应该保存进程的ID。在我的blog中有一篇是讲这个的: > > > > > > > > http://blog.donews.com/limodou/archive/2004/12/28/218177.aspx > > > > > > > > 不过这个方法只适用于*nix。 > > > > > > > > 在 05-7-28,shhgs<shhgs.efhilt at gmail.com> 写道: > > > > > limodou,id文件的方法我听说,只是不知道该怎样建。 > > > > > > > > > > 是不是就是在程序里面加一行 > > > > > f = file('id_filename', 'w') > > > > > 然后到程序退出的时候再 > > > > > f.close() > > > > > os.unlink('id_filename') > > > > > > > > > > > > > > > > > > > > On 7/28/05, limodou <limodou at gmail.com> wrote: > > > > > > 方法很多,不过不知道那些是跨平台的。如windows下使用dde,使用mutex之类的。在linux可以创建一个进程序id文件,新的实例先查找一下。 > > > > > > > > > > > > 通用的可以考虑使用socket。第一个实例启动时先创建一个socket server,后续的实例先与其进行联接,联接上就表明已经有实例,就不再启动。 > > > > > > > > > > > > 在 05-7-28,DIrk<archive.it at gmail.com> 写道: > > > > > > > 各位兄弟, > > > > > > > > > > > > > > 用什么方法防止同一个脚本的多个实例运行? > > > > > > > > > > > > > > Thanks. > > > > > > > > > > > > > > DIrk > > > > > > > http://www.dirkye.com > > > > > > > > > > > > > > _______________________________________________ > > > > > > > python-chinese list > > > > > > > python-chinese at lists.python.cn > > > > > > > http://python.cn/mailman/listinfo/python-chinese > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > I like python! > > > > > > My Donews Blog: http://www.donews.net/limodou > > > > > > New Google Maillist: http://groups-beta.google.com/group/python-cn > > > > > > > > > > > > _______________________________________________ > > > > > > python-chinese list > > > > > > python-chinese at lists.python.cn > > > > > > http://python.cn/mailman/listinfo/python-chinese > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > I like python! > > > > My Donews Blog: http://www.donews.net/limodou > > > > New Google Maillist: http://groups-beta.google.com/group/python-cn > > > > > > > > _______________________________________________ > > > > python-chinese list > > > > python-chinese at lists.python.cn > > > > http://python.cn/mailman/listinfo/python-chinese > > > > > > > > > > > > > > > > > > > > > -- > > I like python! > > My Donews Blog: http://www.donews.net/limodou > > New Google Maillist: http://groups-beta.google.com/group/python-cn > > > > _______________________________________________ > > python-chinese list > > python-chinese at lists.python.cn > > http://python.cn/mailman/listinfo/python-chinese > > > > > > > -- I like python! My Donews Blog: http://www.donews.net/limodou New Google Maillist: http://groups-beta.google.com/group/python-cn
2005年07月28日 星期四 23:35
至少修正了我原先的错误。使用ps + grep + awk方式总是不能绝对保证正确的,而ps -p方式错误的几率应该可以忽略。 Thanks. On 7/28/05, limodou <limodou at gmail.com> wrote: > 那样只是提高检查的速度,竞争还是会存在的,只不过可能时间快,效率会好一些。 > > 在 05-7-28,DIrk<archive.it at gmail.com> 写道: > > 看了你的文章,修改了一下程序,这几天看一下运行情况。 > > > > 我原来是使用ps列出所有进程,使用grep过滤出pid的行,再用awk过滤,这种过滤机制是不正确的。事实上我应该像你的文章中说的那样,ps专门有参数检查某个pid是否存在,简单的检查就可以了,已修改成这种方式,但愿不再有问题。 > > > > Thanks. > > > > > > On 7/28/05, limodou <limodou at gmail.com> wrote: > > > 如果你的程序存在并发是有可能的,会有资源竞争的冲突。那只能想法子使用原子操作,如信号灯,文件加锁什么的。不过增加了复杂性了。 > > > > > > 在 05-7-28,DIrk<archive.it at gmail.com> 写道: > > > > 我现在的程序就是使用了pid文件,并在进程控制器中根据pid文件检测进程是否存在,在大部分时候都运行的都不错,但有时候总会重复运行致使抢占资源引起冲突。 > > > > > > > > 我想,可能是我检查pid的方法有问题,我是使用os.popen开启一个管道,通过ps pid | grep | > > > > awk方式检查指定pid是否在运行,在Python中不知道有什么更好的进程检测方法? > > > > > > > > Thanks. > > > > > > > > > > > > > > > > On 7/28/05, limodou <limodou at gmail.com> wrote: > > > > > 这样不够,应该保存进程的ID。在我的blog中有一篇是讲这个的: > > > > > > > > > > http://blog.donews.com/limodou/archive/2004/12/28/218177.aspx > > > > > > > > > > 不过这个方法只适用于*nix。 > > > > > > > > > > 在 05-7-28,shhgs<shhgs.efhilt at gmail.com> 写道: > > > > > > limodou,id文件的方法我听说,只是不知道该怎样建。 > > > > > > > > > > > > 是不是就是在程序里面加一行 > > > > > > f = file('id_filename', 'w') > > > > > > 然后到程序退出的时候再 > > > > > > f.close() > > > > > > os.unlink('id_filename') > > > > > > > > > > > > > > > > > > > > > > > > On 7/28/05, limodou <limodou at gmail.com> wrote: > > > > > > > 方法很多,不过不知道那些是跨平台的。如windows下使用dde,使用mutex之类的。在linux可以创建一个进程序id文件,新的实例先查找一下。 > > > > > > > > > > > > > > 通用的可以考虑使用socket。第一个实例启动时先创建一个socket server,后续的实例先与其进行联接,联接上就表明已经有实例,就不再启动。 > > > > > > > > > > > > > > 在 05-7-28,DIrk<archive.it at gmail.com> 写道: > > > > > > > > 各位兄弟, > > > > > > > > > > > > > > > > 用什么方法防止同一个脚本的多个实例运行? > > > > > > > > > > > > > > > > Thanks. > > > > > > > > > > > > > > > > DIrk > > > > > > > > http://www.dirkye.com > > > > > > > > > > > > > > > > _______________________________________________ > > > > > > > > python-chinese list > > > > > > > > python-chinese at lists.python.cn > > > > > > > > http://python.cn/mailman/listinfo/python-chinese > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > > I like python! > > > > > > > My Donews Blog: http://www.donews.net/limodou > > > > > > > New Google Maillist: http://groups-beta.google.com/group/python-cn > > > > > > > > > > > > > > _______________________________________________ > > > > > > > python-chinese list > > > > > > > python-chinese at lists.python.cn > > > > > > > http://python.cn/mailman/listinfo/python-chinese > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > I like python! > > > > > My Donews Blog: http://www.donews.net/limodou > > > > > New Google Maillist: http://groups-beta.google.com/group/python-cn > > > > > > > > > > _______________________________________________ > > > > > python-chinese list > > > > > python-chinese at lists.python.cn > > > > > http://python.cn/mailman/listinfo/python-chinese > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > I like python! > > > My Donews Blog: http://www.donews.net/limodou > > > New Google Maillist: http://groups-beta.google.com/group/python-cn > > > > > > _______________________________________________ > > > python-chinese list > > > python-chinese at lists.python.cn > > > http://python.cn/mailman/listinfo/python-chinese > > > > > > > > > > > > > > -- > I like python! > My Donews Blog: http://www.donews.net/limodou > New Google Maillist: http://groups-beta.google.com/group/python-cn > > _______________________________________________ > python-chinese list > python-chinese at lists.python.cn > http://python.cn/mailman/listinfo/python-chinese > > >
2005年07月29日 星期五 03:16
文件怎么加锁。像这样简单创建一个文件,别人可以修改。 On 7/28/05, DIrk <archive.it at gmail.com> wrote: > 至少修正了我原先的错误。使用ps + grep + awk方式总是不能绝对保证正确的,而ps -p方式错误的几率应该可以忽略。 > > Thanks. > > > On 7/28/05, limodou <limodou at gmail.com> wrote: > > 那样只是提高检查的速度,竞争还是会存在的,只不过可能时间快,效率会好一些。 > > > > 在 05-7-28,DIrk<archive.it at gmail.com> 写道: > > > 看了你的文章,修改了一下程序,这几天看一下运行情况。 > > > > > > 我原来是使用ps列出所有进程,使用grep过滤出pid的行,再用awk过滤,这种过滤机制是不正确的。事实上我应该像你的文章中说的那样,ps专门有参数检查某个pid是否存在,简单的检查就可以了,已修改成这种方式,但愿不再有问题。 > > > > > > Thanks. > > > > > > > > > On 7/28/05, limodou <limodou at gmail.com> wrote: > > > > 如果你的程序存在并发是有可能的,会有资源竞争的冲突。那只能想法子使用原子操作,如信号灯,文件加锁什么的。不过增加了复杂性了。 > > > > > > > > 在 05-7-28,DIrk<archive.it at gmail.com> 写道: > > > > > 我现在的程序就是使用了pid文件,并在进程控制器中根据pid文件检测进程是否存在,在大部分时候都运行的都不错,但有时候总会重复运行致使抢占资源引起冲突。 > > > > > > > > > > 我想,可能是我检查pid的方法有问题,我是使用os.popen开启一个管道,通过ps pid | grep | > > > > > awk方式检查指定pid是否在运行,在Python中不知道有什么更好的进程检测方法? > > > > > > > > > > Thanks. > > > > > > > > > > > > > > > > > > > > On 7/28/05, limodou <limodou at gmail.com> wrote: > > > > > > 这样不够,应该保存进程的ID。在我的blog中有一篇是讲这个的: > > > > > > > > > > > > http://blog.donews.com/limodou/archive/2004/12/28/218177.aspx > > > > > > > > > > > > 不过这个方法只适用于*nix。 > > > > > > > > > > > > 在 05-7-28,shhgs<shhgs.efhilt at gmail.com> 写道: > > > > > > > limodou,id文件的方法我听说,只是不知道该怎样建。 > > > > > > > > > > > > > > 是不是就是在程序里面加一行 > > > > > > > f = file('id_filename', 'w') > > > > > > > 然后到程序退出的时候再 > > > > > > > f.close() > > > > > > > os.unlink('id_filename') > > > > > > > > > > > > > > > > > > > > > > > > > > > > On 7/28/05, limodou <limodou at gmail.com> wrote: > > > > > > > > 方法很多,不过不知道那些是跨平台的。如windows下使用dde,使用mutex之类的。在linux可以创建一个进程序id文件,新的实例先查找一下。 > > > > > > > > > > > > > > > > 通用的可以考虑使用socket。第一个实例启动时先创建一个socket server,后续的实例先与其进行联接,联接上就表明已经有实例,就不再启动。 > > > > > > > > > > > > > > > > 在 05-7-28,DIrk<archive.it at gmail.com> 写道: > > > > > > > > > 各位兄弟, > > > > > > > > > > > > > > > > > > 用什么方法防止同一个脚本的多个实例运行? > > > > > > > > > > > > > > > > > > Thanks. > > > > > > > > > > > > > > > > > > DIrk > > > > > > > > > http://www.dirkye.com > > > > > > > > > > > > > > > > > > _______________________________________________ > > > > > > > > > python-chinese list > > > > > > > > > python-chinese at lists.python.cn > > > > > > > > > http://python.cn/mailman/listinfo/python-chinese > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > > > I like python! > > > > > > > > My Donews Blog: http://www.donews.net/limodou > > > > > > > > New Google Maillist: http://groups-beta.google.com/group/python-cn > > > > > > > > > > > > > > > > _______________________________________________ > > > > > > > > python-chinese list > > > > > > > > python-chinese at lists.python.cn > > > > > > > > http://python.cn/mailman/listinfo/python-chinese > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > I like python! > > > > > > My Donews Blog: http://www.donews.net/limodou > > > > > > New Google Maillist: http://groups-beta.google.com/group/python-cn > > > > > > > > > > > > _______________________________________________ > > > > > > python-chinese list > > > > > > python-chinese at lists.python.cn > > > > > > http://python.cn/mailman/listinfo/python-chinese > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > I like python! > > > > My Donews Blog: http://www.donews.net/limodou > > > > New Google Maillist: http://groups-beta.google.com/group/python-cn > > > > > > > > _______________________________________________ > > > > python-chinese list > > > > python-chinese at lists.python.cn > > > > http://python.cn/mailman/listinfo/python-chinese > > > > > > > > > > > > > > > > > > > > > -- > > I like python! > > My Donews Blog: http://www.donews.net/limodou > > New Google Maillist: http://groups-beta.google.com/group/python-cn > > > > _______________________________________________ > > python-chinese list > > python-chinese at lists.python.cn > > http://python.cn/mailman/listinfo/python-chinese > > > > > > > > _______________________________________________ > python-chinese list > python-chinese at lists.python.cn > http://python.cn/mailman/listinfo/python-chinese > > >
2005年07月29日 星期五 08:31
文件加锁有专门的方法。unix有fcntl模块可以干这个。windows下应该也有,不过不知道python下如何处理。 在 05-7-29,shhgs<shhgs.efhilt at gmail.com> 写道: > 文件怎么加锁。像这样简单创建一个文件,别人可以修改。 > > On 7/28/05, DIrk <archive.it at gmail.com> wrote: > > 至少修正了我原先的错误。使用ps + grep + awk方式总是不能绝对保证正确的,而ps -p方式错误的几率应该可以忽略。 > > > > Thanks. > > > > > > On 7/28/05, limodou <limodou at gmail.com> wrote: > > > 那样只是提高检查的速度,竞争还是会存在的,只不过可能时间快,效率会好一些。 > > > > > > 在 05-7-28,DIrk<archive.it at gmail.com> 写道: > > > > 看了你的文章,修改了一下程序,这几天看一下运行情况。 > > > > > > > > 我原来是使用ps列出所有进程,使用grep过滤出pid的行,再用awk过滤,这种过滤机制是不正确的。事实上我应该像你的文章中说的那样,ps专门有参数检查某个pid是否存在,简单的检查就可以了,已修改成这种方式,但愿不再有问题。 > > > > > > > > Thanks. > > > > > > > > > > > > On 7/28/05, limodou <limodou at gmail.com> wrote: > > > > > 如果你的程序存在并发是有可能的,会有资源竞争的冲突。那只能想法子使用原子操作,如信号灯,文件加锁什么的。不过增加了复杂性了。 > > > > > > > > > > 在 05-7-28,DIrk<archive.it at gmail.com> 写道: > > > > > > 我现在的程序就是使用了pid文件,并在进程控制器中根据pid文件检测进程是否存在,在大部分时候都运行的都不错,但有时候总会重复运行致使抢占资源引起冲突。 > > > > > > > > > > > > 我想,可能是我检查pid的方法有问题,我是使用os.popen开启一个管道,通过ps pid | grep | > > > > > > awk方式检查指定pid是否在运行,在Python中不知道有什么更好的进程检测方法? > > > > > > > > > > > > Thanks. > > > > > > > > > > > > > > > > > > > > > > > > On 7/28/05, limodou <limodou at gmail.com> wrote: > > > > > > > 这样不够,应该保存进程的ID。在我的blog中有一篇是讲这个的: > > > > > > > > > > > > > > http://blog.donews.com/limodou/archive/2004/12/28/218177.aspx > > > > > > > > > > > > > > 不过这个方法只适用于*nix。 > > > > > > > > > > > > > > 在 05-7-28,shhgs<shhgs.efhilt at gmail.com> 写道: > > > > > > > > limodou,id文件的方法我听说,只是不知道该怎样建。 > > > > > > > > > > > > > > > > 是不是就是在程序里面加一行 > > > > > > > > f = file('id_filename', 'w') > > > > > > > > 然后到程序退出的时候再 > > > > > > > > f.close() > > > > > > > > os.unlink('id_filename') > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On 7/28/05, limodou <limodou at gmail.com> wrote: > > > > > > > > > 方法很多,不过不知道那些是跨平台的。如windows下使用dde,使用mutex之类的。在linux可以创建一个进程序id文件,新的实例先查找一下。 > > > > > > > > > > > > > > > > > > 通用的可以考虑使用socket。第一个实例启动时先创建一个socket server,后续的实例先与其进行联接,联接上就表明已经有实例,就不再启动。 > > > > > > > > > > > > > > > > > > 在 05-7-28,DIrk<archive.it at gmail.com> 写道: > > > > > > > > > > 各位兄弟, > > > > > > > > > > > > > > > > > > > > 用什么方法防止同一个脚本的多个实例运行? > > > > > > > > > > > > > > > > > > > > Thanks. > > > > > > > > > > > > > > > > > > > > DIrk > > > > > > > > > > http://www.dirkye.com > > > > > > > > > > > > > > > > > > > > _______________________________________________ > > > > > > > > > > python-chinese list > > > > > > > > > > python-chinese at lists.python.cn > > > > > > > > > > http://python.cn/mailman/listinfo/python-chinese > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > > > > I like python! > > > > > > > > > My Donews Blog: http://www.donews.net/limodou > > > > > > > > > New Google Maillist: http://groups-beta.google.com/group/python-cn > > > > > > > > > > > > > > > > > > _______________________________________________ > > > > > > > > > python-chinese list > > > > > > > > > python-chinese at lists.python.cn > > > > > > > > > http://python.cn/mailman/listinfo/python-chinese > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > > I like python! > > > > > > > My Donews Blog: http://www.donews.net/limodou > > > > > > > New Google Maillist: http://groups-beta.google.com/group/python-cn > > > > > > > > > > > > > > _______________________________________________ > > > > > > > python-chinese list > > > > > > > python-chinese at lists.python.cn > > > > > > > http://python.cn/mailman/listinfo/python-chinese > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > I like python! > > > > > My Donews Blog: http://www.donews.net/limodou > > > > > New Google Maillist: http://groups-beta.google.com/group/python-cn > > > > > > > > > > _______________________________________________ > > > > > python-chinese list > > > > > python-chinese at lists.python.cn > > > > > http://python.cn/mailman/listinfo/python-chinese > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > I like python! > > > My Donews Blog: http://www.donews.net/limodou > > > New Google Maillist: http://groups-beta.google.com/group/python-cn > > > > > > _______________________________________________ > > > python-chinese list > > > python-chinese at lists.python.cn > > > http://python.cn/mailman/listinfo/python-chinese > > > > > > > > > > > > > _______________________________________________ > > python-chinese list > > python-chinese at lists.python.cn > > http://python.cn/mailman/listinfo/python-chinese > > > > > > > > _______________________________________________ > python-chinese list > python-chinese at lists.python.cn > http://python.cn/mailman/listinfo/python-chinese > > > -- I like python! My Donews Blog: http://www.donews.net/limodou New Google Maillist: http://groups-beta.google.com/group/python-cn
2005年07月29日 星期五 14:37
这是这个礼拜第二次看到fcntl模块了。 我看文档看得云山雾罩的,它只说用一个fd,一个op然后做操作。但是具体有哪些op,能干什么,我一点都没概念。现在我知道第一个用途,就是给文件加锁。那么请问怎样加锁。 我看了一下linux的man,一点头绪都没有。limodou,能否给一段代码? 此外,看文档,发现os.open有很多flag的参数,是不是可以给文件加锁? On 7/28/05, limodou <limodou at gmail.com> wrote: > 文件加锁有专门的方法。unix有fcntl模块可以干这个。windows下应该也有,不过不知道python下如何处理。 > > 在 05-7-29,shhgs<shhgs.efhilt at gmail.com> 写道: > > 文件怎么加锁。像这样简单创建一个文件,别人可以修改。 > > > > On 7/28/05, DIrk <archive.it at gmail.com> wrote: > > > 至少修正了我原先的错误。使用ps + grep + awk方式总是不能绝对保证正确的,而ps -p方式错误的几率应该可以忽略。 > > > > > > Thanks. > > > > > > > > > On 7/28/05, limodou <limodou at gmail.com> wrote: > > > > 那样只是提高检查的速度,竞争还是会存在的,只不过可能时间快,效率会好一些。 > > > > > > > > 在 05-7-28,DIrk<archive.it at gmail.com> 写道: > > > > > 看了你的文章,修改了一下程序,这几天看一下运行情况。 > > > > > > > > > > 我原来是使用ps列出所有进程,使用grep过滤出pid的行,再用awk过滤,这种过滤机制是不正确的。事实上我应该像你的文章中说的那样,ps专门有参数检查某个pid是否存在,简单的检查就可以了,已修改成这种方式,但愿不再有问题。 > > > > > > > > > > Thanks. > > > > > > > > > > > > > > > On 7/28/05, limodou <limodou at gmail.com> wrote: > > > > > > 如果你的程序存在并发是有可能的,会有资源竞争的冲突。那只能想法子使用原子操作,如信号灯,文件加锁什么的。不过增加了复杂性了。 > > > > > > > > > > > > 在 05-7-28,DIrk<archive.it at gmail.com> 写道: > > > > > > > 我现在的程序就是使用了pid文件,并在进程控制器中根据pid文件检测进程是否存在,在大部分时候都运行的都不错,但有时候总会重复运行致使抢占资源引起冲突。 > > > > > > > > > > > > > > 我想,可能是我检查pid的方法有问题,我是使用os.popen开启一个管道,通过ps pid | grep | > > > > > > > awk方式检查指定pid是否在运行,在Python中不知道有什么更好的进程检测方法? > > > > > > > > > > > > > > Thanks. > > > > > > > > > > > > > > > > > > > > > > > > > > > > On 7/28/05, limodou <limodou at gmail.com> wrote: > > > > > > > > 这样不够,应该保存进程的ID。在我的blog中有一篇是讲这个的: > > > > > > > > > > > > > > > > http://blog.donews.com/limodou/archive/2004/12/28/218177.aspx > > > > > > > > > > > > > > > > 不过这个方法只适用于*nix。 > > > > > > > > > > > > > > > > 在 05-7-28,shhgs<shhgs.efhilt at gmail.com> 写道: > > > > > > > > > limodou,id文件的方法我听说,只是不知道该怎样建。 > > > > > > > > > > > > > > > > > > 是不是就是在程序里面加一行 > > > > > > > > > f = file('id_filename', 'w') > > > > > > > > > 然后到程序退出的时候再 > > > > > > > > > f.close() > > > > > > > > > os.unlink('id_filename') > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On 7/28/05, limodou <limodou at gmail.com> wrote: > > > > > > > > > > 方法很多,不过不知道那些是跨平台的。如windows下使用dde,使用mutex之类的。在linux可以创建一个进程序id文件,新的实例先查找一下。 > > > > > > > > > > > > > > > > > > > > 通用的可以考虑使用socket。第一个实例启动时先创建一个socket server,后续的实例先与其进行联接,联接上就表明已经有实例,就不再启动。 > > > > > > > > > > > > > > > > > > > > 在 05-7-28,DIrk<archive.it at gmail.com> 写道: > > > > > > > > > > > 各位兄弟, > > > > > > > > > > > > > > > > > > > > > > 用什么方法防止同一个脚本的多个实例运行? > > > > > > > > > > > > > > > > > > > > > > Thanks. > > > > > > > > > > > > > > > > > > > > > > DIrk > > > > > > > > > > > http://www.dirkye.com > > > > > > > > > > > > > > > > > > > > > > _______________________________________________ > > > > > > > > > > > python-chinese list > > > > > > > > > > > python-chinese at lists.python.cn > > > > > > > > > > > http://python.cn/mailman/listinfo/python-chinese > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > > > > > I like python! > > > > > > > > > > My Donews Blog: http://www.donews.net/limodou > > > > > > > > > > New Google Maillist: http://groups-beta.google.com/group/python-cn > > > > > > > > > > > > > > > > > > > > _______________________________________________ > > > > > > > > > > python-chinese list > > > > > > > > > > python-chinese at lists.python.cn > > > > > > > > > > http://python.cn/mailman/listinfo/python-chinese > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > > > I like python! > > > > > > > > My Donews Blog: http://www.donews.net/limodou > > > > > > > > New Google Maillist: http://groups-beta.google.com/group/python-cn > > > > > > > > > > > > > > > > _______________________________________________ > > > > > > > > python-chinese list > > > > > > > > python-chinese at lists.python.cn > > > > > > > > http://python.cn/mailman/listinfo/python-chinese > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > I like python! > > > > > > My Donews Blog: http://www.donews.net/limodou > > > > > > New Google Maillist: http://groups-beta.google.com/group/python-cn > > > > > > > > > > > > _______________________________________________ > > > > > > python-chinese list > > > > > > python-chinese at lists.python.cn > > > > > > http://python.cn/mailman/listinfo/python-chinese > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > I like python! > > > > My Donews Blog: http://www.donews.net/limodou > > > > New Google Maillist: http://groups-beta.google.com/group/python-cn > > > > > > > > _______________________________________________ > > > > python-chinese list > > > > python-chinese at lists.python.cn > > > > http://python.cn/mailman/listinfo/python-chinese > > > > > > > > > > > > > > > > > > _______________________________________________ > > > python-chinese list > > > python-chinese at lists.python.cn > > > http://python.cn/mailman/listinfo/python-chinese > > > > > > > > > > > > > _______________________________________________ > > python-chinese list > > python-chinese at lists.python.cn > > http://python.cn/mailman/listinfo/python-chinese > > > > > > > > > -- > I like python! > My Donews Blog: http://www.donews.net/limodou > New Google Maillist: http://groups-beta.google.com/group/python-cn > > _______________________________________________ > python-chinese list > python-chinese at lists.python.cn > http://python.cn/mailman/listinfo/python-chinese > > >
2005年07月29日 星期五 14:40
DIrk Unix下有一个pgrep命令,用来找pid很方便。 Python里面可以这样获取进程的pid pid = os.tcgetpgrep(0) 这里0是一个file descriptor,表示stdin,每个进程都有的。 On 7/28/05, DIrk <archive.it at gmail.com> wrote: > 至少修正了我原先的错误。使用ps + grep + awk方式总是不能绝对保证正确的,而ps -p方式错误的几率应该可以忽略。 > > Thanks. > > > On 7/28/05, limodou <limodou at gmail.com> wrote: > > 那样只是提高检查的速度,竞争还是会存在的,只不过可能时间快,效率会好一些。 > > > > 在 05-7-28,DIrk<archive.it at gmail.com> 写道: > > > 看了你的文章,修改了一下程序,这几天看一下运行情况。 > > > > > > 我原来是使用ps列出所有进程,使用grep过滤出pid的行,再用awk过滤,这种过滤机制是不正确的。事实上我应该像你的文章中说的那样,ps专门有参数检查某个pid是否存在,简单的检查就可以了,已修改成这种方式,但愿不再有问题。 > > > > > > Thanks. > > > > > > > > > On 7/28/05, limodou <limodou at gmail.com> wrote: > > > > 如果你的程序存在并发是有可能的,会有资源竞争的冲突。那只能想法子使用原子操作,如信号灯,文件加锁什么的。不过增加了复杂性了。 > > > > > > > > 在 05-7-28,DIrk<archive.it at gmail.com> 写道: > > > > > 我现在的程序就是使用了pid文件,并在进程控制器中根据pid文件检测进程是否存在,在大部分时候都运行的都不错,但有时候总会重复运行致使抢占资源引起冲突。 > > > > > > > > > > 我想,可能是我检查pid的方法有问题,我是使用os.popen开启一个管道,通过ps pid | grep | > > > > > awk方式检查指定pid是否在运行,在Python中不知道有什么更好的进程检测方法? > > > > > > > > > > Thanks. > > > > > > > > > > > > > > > > > > > > On 7/28/05, limodou <limodou at gmail.com> wrote: > > > > > > 这样不够,应该保存进程的ID。在我的blog中有一篇是讲这个的: > > > > > > > > > > > > http://blog.donews.com/limodou/archive/2004/12/28/218177.aspx > > > > > > > > > > > > 不过这个方法只适用于*nix。 > > > > > > > > > > > > 在 05-7-28,shhgs<shhgs.efhilt at gmail.com> 写道: > > > > > > > limodou,id文件的方法我听说,只是不知道该怎样建。 > > > > > > > > > > > > > > 是不是就是在程序里面加一行 > > > > > > > f = file('id_filename', 'w') > > > > > > > 然后到程序退出的时候再 > > > > > > > f.close() > > > > > > > os.unlink('id_filename') > > > > > > > > > > > > > > > > > > > > > > > > > > > > On 7/28/05, limodou <limodou at gmail.com> wrote: > > > > > > > > 方法很多,不过不知道那些是跨平台的。如windows下使用dde,使用mutex之类的。在linux可以创建一个进程序id文件,新的实例先查找一下。 > > > > > > > > > > > > > > > > 通用的可以考虑使用socket。第一个实例启动时先创建一个socket server,后续的实例先与其进行联接,联接上就表明已经有实例,就不再启动。 > > > > > > > > > > > > > > > > 在 05-7-28,DIrk<archive.it at gmail.com> 写道: > > > > > > > > > 各位兄弟, > > > > > > > > > > > > > > > > > > 用什么方法防止同一个脚本的多个实例运行? > > > > > > > > > > > > > > > > > > Thanks. > > > > > > > > > > > > > > > > > > DIrk > > > > > > > > > http://www.dirkye.com > > > > > > > > > > > > > > > > > > _______________________________________________ > > > > > > > > > python-chinese list > > > > > > > > > python-chinese at lists.python.cn > > > > > > > > > http://python.cn/mailman/listinfo/python-chinese > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > > > I like python! > > > > > > > > My Donews Blog: http://www.donews.net/limodou > > > > > > > > New Google Maillist: http://groups-beta.google.com/group/python-cn > > > > > > > > > > > > > > > > _______________________________________________ > > > > > > > > python-chinese list > > > > > > > > python-chinese at lists.python.cn > > > > > > > > http://python.cn/mailman/listinfo/python-chinese > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > I like python! > > > > > > My Donews Blog: http://www.donews.net/limodou > > > > > > New Google Maillist: http://groups-beta.google.com/group/python-cn > > > > > > > > > > > > _______________________________________________ > > > > > > python-chinese list > > > > > > python-chinese at lists.python.cn > > > > > > http://python.cn/mailman/listinfo/python-chinese > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > I like python! > > > > My Donews Blog: http://www.donews.net/limodou > > > > New Google Maillist: http://groups-beta.google.com/group/python-cn > > > > > > > > _______________________________________________ > > > > python-chinese list > > > > python-chinese at lists.python.cn > > > > http://python.cn/mailman/listinfo/python-chinese > > > > > > > > > > > > > > > > > > > > > -- > > I like python! > > My Donews Blog: http://www.donews.net/limodou > > New Google Maillist: http://groups-beta.google.com/group/python-cn > > > > _______________________________________________ > > python-chinese list > > python-chinese at lists.python.cn > > http://python.cn/mailman/listinfo/python-chinese > > > > > > > > _______________________________________________ > python-chinese list > python-chinese at lists.python.cn > http://python.cn/mailman/listinfo/python-chinese > > >
2005年07月29日 星期五 15:23
fd就是fileno()也就是底层的文件句柄。它是一个数字,而不是一个对象。它可以通过f.fileno() 来得到。 op就是option,其实是许多的标志位的宏。象文档中举了: LOCK_UN - unlock LOCK_SH - acquire a shared lock LOCK_EX - acquire an exclusive lock 它是与C中的相应的宏对应的。查一查C的手册应该可以了解了。fcntl功能很多,我也没怎么用过。 -- I like python! My Donews Blog: http://www.donews.net/limodou New Google Maillist: http://groups-beta.google.com/group/python-cn
2005年07月29日 星期五 16:21
拼错了,应该是pid = os.tcgetpgrp(0)。Windows下不能用,Linux下可以! Best Regards Richard Lee (李富足) T&P; Department, E28 Ltd. Tel: 86-21-23060088, Ext: 359. -----邮件原件----- 发件人: python-chinese-bounces at lists.python.cn [mailto:python-chinese-bounces at lists.python.cn] 代表 shhgs 发送时间: 2005年7月29日 14:41 收件人: DIrk; python-chinese at lists.python.cn 主题: Re: [python-chinese] 问一个关于进程锁的问题。 DIrk Unix下有一个pgrep命令,用来找pid很方便。 Python里面可以这样获取进程的pid pid = os.tcgetpgrep(0) 这里0是一个file descriptor,表示stdin,每个进程都有的。 On 7/28/05, DIrk <archive.it at gmail.com> wrote: > 至少修正了我原先的错误。使用ps + grep + awk方式总是不能绝对保证正确的,而 ps -p方式错误的几率应该可以忽略。 > > Thanks. > > > On 7/28/05, limodou <limodou at gmail.com> wrote: > > 那样只是提高检查的速度,竞争还是会存在的,只不过可能时间快,效率会好一 些。 > > > > 在 05-7-28,DIrk<archive.it at gmail.com> 写道: > > > 看了你的文章,修改了一下程序,这几天看一下运行情况。 > > > > > > 我原来是使用ps列出所有进程,使用grep过滤出pid的行,再用awk过滤,这种过 滤机制是不正确的。事实上我应该像你的文章中说的那样,ps专门有参数检查某个pid 是否存在,简单的检查就可以了,已修改成这种方式,但愿不再有问题。 > > > > > > Thanks. > > > > > > > > > On 7/28/05, limodou <limodou at gmail.com> wrote: > > > > 如果你的程序存在并发是有可能的,会有资源竞争的冲突。那只能想法子使用 原子操作,如信号灯,文件加锁什么的。不过增加了复杂性了。 > > > > > > > > 在 05-7-28,DIrk<archive.it at gmail.com> 写道: > > > > > 我现在的程序就是使用了pid文件,并在进程控制器中根据pid文件检测进程 是否存在,在大部分时候都运行的都不错,但有时候总会重复运行致使抢占资源引起冲 突。 > > > > > > > > > > 我想,可能是我检查pid的方法有问题,我是使用os.popen开启一个管道, 通过ps pid | grep | > > > > > awk方式检查指定pid是否在运行,在Python中不知道有什么更好的进程检测 方法? > > > > > > > > > > Thanks. > > > > > > > > > > > > > > > > > > > > On 7/28/05, limodou <limodou at gmail.com> wrote: > > > > > > 这样不够,应该保存进程的ID。在我的blog中有一篇是讲这个的: > > > > > > > > > > > > http://blog.donews.com/limodou/archive/2004/12/28/218177.aspx > > > > > > > > > > > > 不过这个方法只适用于*nix。 > > > > > > > > > > > > 在 05-7-28,shhgs<shhgs.efhilt at gmail.com> 写道: > > > > > > > limodou,id文件的方法我听说,只是不知道该怎样建。 > > > > > > > > > > > > > > 是不是就是在程序里面加一行 > > > > > > > f = file('id_filename', 'w') > > > > > > > 然后到程序退出的时候再 > > > > > > > f.close() > > > > > > > os.unlink('id_filename') > > > > > > > > > > > > > > > > > > > > > > > > > > > > On 7/28/05, limodou <limodou at gmail.com> wrote: > > > > > > > > 方法很多,不过不知道那些是跨平台的。如windows下使用dde,使用 mutex之类的。在linux可以创建一个进程序id文件,新的实例先查找一下。 > > > > > > > > > > > > > > > > 通用的可以考虑使用socket。第一个实例启动时先创建一个socket server,后续的实例先与其进行联接,联接上就表明已经有实例,就不再启动。 > > > > > > > > > > > > > > > > 在 05-7-28,DIrk<archive.it at gmail.com> 写道: > > > > > > > > > 各位兄弟, > > > > > > > > > > > > > > > > > > 用什么方法防止同一个脚本的多个实例运行? > > > > > > > > > > > > > > > > > > Thanks. > > > > > > > > > > > > > > > > > > DIrk > > > > > > > > > http://www.dirkye.com > > > > > > > > > > > > > > > > > > _______________________________________________ > > > > > > > > > python-chinese list > > > > > > > > > python-chinese at lists.python.cn > > > > > > > > > http://python.cn/mailman/listinfo/python-chinese > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > > > I like python! > > > > > > > > My Donews Blog: http://www.donews.net/limodou > > > > > > > > New Google Maillist: http://groups-beta.google.com/group/python-cn > > > > > > > > > > > > > > > > _______________________________________________ > > > > > > > > python-chinese list > > > > > > > > python-chinese at lists.python.cn > > > > > > > > http://python.cn/mailman/listinfo/python-chinese > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > I like python! > > > > > > My Donews Blog: http://www.donews.net/limodou > > > > > > New Google Maillist: http://groups-beta.google.com/group/python-cn > > > > > > > > > > > > _______________________________________________ > > > > > > python-chinese list > > > > > > python-chinese at lists.python.cn > > > > > > http://python.cn/mailman/listinfo/python-chinese > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > I like python! > > > > My Donews Blog: http://www.donews.net/limodou > > > > New Google Maillist: http://groups-beta.google.com/group/python-cn > > > > > > > > _______________________________________________ > > > > python-chinese list > > > > python-chinese at lists.python.cn > > > > http://python.cn/mailman/listinfo/python-chinese > > > > > > > > > > > > > > > > > > > > > -- > > I like python! > > My Donews Blog: http://www.donews.net/limodou > > New Google Maillist: http://groups-beta.google.com/group/python-cn > > > > _______________________________________________ > > python-chinese list > > python-chinese at lists.python.cn > > http://python.cn/mailman/listinfo/python-chinese > > > > > > > > _______________________________________________ > python-chinese list > python-chinese at lists.python.cn > http://python.cn/mailman/listinfo/python-chinese > > >
2005年07月29日 星期五 16:51
GOD!!! 这么长的邮件?线索也没了。 把引用的内容修剪一下啊。有没有办法不让列表自动加那几行?
2005年07月30日 星期六 21:59
Python cookbook中有介绍,以下代码示例: import os # needs win32all to work on Windows (NT, 2K, XP, _not_ /95 or /98) if os.name == 'nt': import win32con, win32file, pywintypes LOCK_EX = win32con.LOCKFILE_EXCLUSIVE_LOCK LOCK_SH = 0 # the default LOCK_NB = win32con.LOCKFILE_FAIL_IMMEDIATELY _ _overlapped = pywintypes.OVERLAPPED( ) def lock(file, flags): hfile = win32file._get_osfhandle(file.fileno( )) win32file.LockFileEx(hfile, flags, 0, 0xffff0000, _ _overlapped) def unlock(file): hfile = win32file._get_osfhandle(file.fileno( )) win32file.UnlockFileEx(hfile, 0, 0xffff0000, _ _overlapped) elif os.name == 'posix': from fcntl import LOCK_EX, LOCK_SH, LOCK_NB def lock(file, flags): fcntl.flock(file.fileno( ), flags) def unlock(file): fcntl.flock(file.fileno( ), fcntl.LOCK_UN) else: raise RuntimeError("PortaLocker only defined for nt and posix platforms") DIrk http://www.dirkye.com On 7/29/05, shhgs <shhgs.efhilt at gmail.com> wrote: > 这是这个礼拜第二次看到fcntl模块了。 > > 我看文档看得云山雾罩的,它只说用一个fd,一个op然后做操作。但是具体有哪些op,能干什么,我一点都没概念。现在我知道第一个用途,就是给文件加锁。那么请问怎样加锁。 > > 我看了一下linux的man,一点头绪都没有。limodou,能否给一段代码? > > 此外,看文档,发现os.open有很多flag的参数,是不是可以给文件加锁? > > On 7/28/05, limodou <limodou at gmail.com> wrote: > > 文件加锁有专门的方法。unix有fcntl模块可以干这个。windows下应该也有,不过不知道python下如何处理。 > > > > 在 05-7-29,shhgs<shhgs.efhilt at gmail.com> 写道: > > > 文件怎么加锁。像这样简单创建一个文件,别人可以修改。 > > > > > > On 7/28/05, DIrk <archive.it at gmail.com> wrote: > > > > 至少修正了我原先的错误。使用ps + grep + awk方式总是不能绝对保证正确的,而ps -p方式错误的几率应该可以忽略。 > > > > > > > > Thanks. > > > > > > > > > > > > On 7/28/05, limodou <limodou at gmail.com> wrote: > > > > > 那样只是提高检查的速度,竞争还是会存在的,只不过可能时间快,效率会好一些。 > > > > > > > > > > 在 05-7-28,DIrk<archive.it at gmail.com> 写道: > > > > > > 看了你的文章,修改了一下程序,这几天看一下运行情况。 > > > > > > > > > > > > 我原来是使用ps列出所有进程,使用grep过滤出pid的行,再用awk过滤,这种过滤机制是不正确的。事实上我应该像你的文章中说的那样,ps专门有参数检查某个pid是否存在,简单的检查就可以了,已修改成这种方式,但愿不再有问题。 > > > > > > > > > > > > Thanks. > > > > > > > > > > > > > > > > > > On 7/28/05, limodou <limodou at gmail.com> wrote: > > > > > > > 如果你的程序存在并发是有可能的,会有资源竞争的冲突。那只能想法子使用原子操作,如信号灯,文件加锁什么的。不过增加了复杂性了。 > > > > > > > > > > > > > > 在 05-7-28,DIrk<archive.it at gmail.com> 写道: > > > > > > > > 我现在的程序就是使用了pid文件,并在进程控制器中根据pid文件检测进程是否存在,在大部分时候都运行的都不错,但有时候总会重复运行致使抢占资源引起冲突。 > > > > > > > > > > > > > > > > 我想,可能是我检查pid的方法有问题,我是使用os.popen开启一个管道,通过ps pid | grep | > > > > > > > > awk方式检查指定pid是否在运行,在Python中不知道有什么更好的进程检测方法? > > > > > > > > > > > > > > > > Thanks. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On 7/28/05, limodou <limodou at gmail.com> wrote: > > > > > > > > > 这样不够,应该保存进程的ID。在我的blog中有一篇是讲这个的: > > > > > > > > > > > > > > > > > > http://blog.donews.com/limodou/archive/2004/12/28/218177.aspx > > > > > > > > > > > > > > > > > > 不过这个方法只适用于*nix。 > > > > > > > > > > > > > > > > > > 在 05-7-28,shhgs<shhgs.efhilt at gmail.com> 写道: > > > > > > > > > > limodou,id文件的方法我听说,只是不知道该怎样建。 > > > > > > > > > > > > > > > > > > > > 是不是就是在程序里面加一行 > > > > > > > > > > f = file('id_filename', 'w') > > > > > > > > > > 然后到程序退出的时候再 > > > > > > > > > > f.close() > > > > > > > > > > os.unlink('id_filename') > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On 7/28/05, limodou <limodou at gmail.com> wrote: > > > > > > > > > > > 方法很多,不过不知道那些是跨平台的。如windows下使用dde,使用mutex之类的。在linux可以创建一个进程序id文件,新的实例先查找一下。 > > > > > > > > > > > > > > > > > > > > > > 通用的可以考虑使用socket。第一个实例启动时先创建一个socket server,后续的实例先与其进行联接,联接上就表明已经有实例,就不再启动。 > > > > > > > > > > > > > > > > > > > > > > 在 05-7-28,DIrk<archive.it at gmail.com> 写道: > > > > > > > > > > > > 各位兄弟, > > > > > > > > > > > > > > > > > > > > > > > > 用什么方法防止同一个脚本的多个实例运行? > > > > > > > > > > > > > > > > > > > > > > > > Thanks. > > > > > > > > > > > > > > > > > > > > > > > > DIrk > > > > > > > > > > > > http://www.dirkye.com > > > > > > > > > > > > > > > > > > > > > > > > _______________________________________________ > > > > > > > > > > > > python-chinese list > > > > > > > > > > > > python-chinese at lists.python.cn > > > > > > > > > > > > http://python.cn/mailman/listinfo/python-chinese > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > > > > > > I like python! > > > > > > > > > > > My Donews Blog: http://www.donews.net/limodou > > > > > > > > > > > New Google Maillist: http://groups-beta.google.com/group/python-cn > > > > > > > > > > > > > > > > > > > > > > _______________________________________________ > > > > > > > > > > > python-chinese list > > > > > > > > > > > python-chinese at lists.python.cn > > > > > > > > > > > http://python.cn/mailman/listinfo/python-chinese > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > > > > I like python! > > > > > > > > > My Donews Blog: http://www.donews.net/limodou > > > > > > > > > New Google Maillist: http://groups-beta.google.com/group/python-cn > > > > > > > > > > > > > > > > > > _______________________________________________ > > > > > > > > > python-chinese list > > > > > > > > > python-chinese at lists.python.cn > > > > > > > > > http://python.cn/mailman/listinfo/python-chinese > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > > I like python! > > > > > > > My Donews Blog: http://www.donews.net/limodou > > > > > > > New Google Maillist: http://groups-beta.google.com/group/python-cn > > > > > > > > > > > > > > _______________________________________________ > > > > > > > python-chinese list > > > > > > > python-chinese at lists.python.cn > > > > > > > http://python.cn/mailman/listinfo/python-chinese > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > I like python! > > > > > My Donews Blog: http://www.donews.net/limodou > > > > > New Google Maillist: http://groups-beta.google.com/group/python-cn > > > > > > > > > > _______________________________________________ > > > > > python-chinese list > > > > > python-chinese at lists.python.cn > > > > > http://python.cn/mailman/listinfo/python-chinese > > > > > > > > > > > > > > > > > > > > > > > _______________________________________________ > > > > python-chinese list > > > > python-chinese at lists.python.cn > > > > http://python.cn/mailman/listinfo/python-chinese > > > > > > > > > > > > > > > > > > _______________________________________________ > > > python-chinese list > > > python-chinese at lists.python.cn > > > http://python.cn/mailman/listinfo/python-chinese > > > > > > > > > > > > > > > -- > > I like python! > > My Donews Blog: http://www.donews.net/limodou > > New Google Maillist: http://groups-beta.google.com/group/python-cn > > > > _______________________________________________ > > python-chinese list > > python-chinese at lists.python.cn > > http://python.cn/mailman/listinfo/python-chinese > > > > > > > > _______________________________________________ > python-chinese list > python-chinese at lists.python.cn > http://python.cn/mailman/listinfo/python-chinese > > >
Zeuux © 2025
京ICP备05028076号