Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Подскажите по тредам, как запустить утилиту два раза 
:(
    Опции темы
Suppir
Дата 28.4.2011, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 588
Регистрация: 20.4.2009

Репутация: нет
Всего: нет



Есть скрипт:

Код

$path = "f:\\master\\data\\data";
system (".\\tools\\dump.exe " .$path. " Force > priority.dump");
system (".\\tools\\dump.exe -s " .$path. " PublishedIn 0 > publishedin.dump");


Он запускает два раза утилиту dump.exe с разными параметрами. Утилита работает два раза по часу (т.е. два часа). На компьютере 2 ядра, работает только 50%.  Как запустить эти два процесса одновременно?


PM MAIL   Вверх
DurRandir
Дата 28.4.2011, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 335
Регистрация: 27.9.2009

Репутация: 14
Всего: 17



fork+exec, можно ещё сделать setsid, если родителю не надо ждать детей. Если надо, причём заблокироваться на время ожидания, то вызвать в исходном процессе waitpid 2 раза.
PM   Вверх
OutlawZ
Дата 28.4.2011, 16:23 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 269
Регистрация: 19.10.2007

Репутация: нет
Всего: нет



Используйте use Threads;
Что то в этом роде.
Код

use Threads;

....

$net_o = threads->new(system(".\\tools\\dump.exe " .$path. " Force > priority.dump"));
$net_t  = threads->new(system(".\\tools\\dump.exe " .$path. " Force > priority.dump"));

.....


Для более больших подробностей смотрите perldoc Threads

Это сообщение отредактировал(а) OutlawZ - 28.4.2011, 16:23


--------------------
user posted image
user posted image
PM MAIL   Вверх
Suppir
Дата 28.4.2011, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 588
Регистрация: 20.4.2009

Репутация: нет
Всего: нет



А как реализовать самым простым способом? Следить за окончанием работы не нужно. Всего лишь нужно тупо создать два процесса:

system (".\\tools\\dump.exe " .$path. " Force > priority.dump")
и 
system (".\\tools\\dump.exe -s " .$path. " PublishedIn 0 > publishedin.dump")

Добавлено через 29 секунд
OutlawZ, 

спасибо, то что нужно!
PM MAIL   Вверх
Pfailed
Дата 28.4.2011, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 19.7.2009

Репутация: 22
Всего: 39



Цитата(DurRandir @ 28.4.2011,  16:15)
fork+exec, можно ещё сделать setsid, если родителю не надо ждать детей. Если надо, причём заблокироваться на время ожидания, то вызвать в исходном процессе waitpid 2 раза.

Это всё работает в windows?

Добавлено через 4 минуты и 4 секунды
Цитата(OutlawZ @ 28.4.2011,  16:23)
Используйте use Threads;
Что то в этом роде.
Код

use Threads;

....

$net_o = threads->new(system(".\\tools\\dump.exe " .$path. " Force > priority.dump"));
$net_t  = threads->new(system(".\\tools\\dump.exe " .$path. " Force > priority.dump"));

.....


Для более больших подробностей смотрите perldoc Threads

threads он, а не Threads. Это спасибо windows за регистронезависимость в именах файлов, а в более нормальной системе такой трюк уже не удастся.


--------------------
PM MAIL   Вверх
OutlawZ
Дата 28.4.2011, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 269
Регистрация: 19.10.2007

Репутация: нет
Всего: нет



Цитата

threads он, а не Threads. Это спасибо windows за регистронезависимость в именах файлов, а в более нормальной системе такой трюк уже не удастся. 


Может дело в Active Perl ? smile, потому что модуль HTTP::Template если пропишу HTTP::template то уже он его не находит smile. 


--------------------
user posted image
user posted image
PM MAIL   Вверх
Pfailed
Дата 28.4.2011, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 19.7.2009

Репутация: 22
Всего: 39



Цитата(OutlawZ @ 28.4.2011,  17:34)
Может дело в Active Perl ? smile, потому что модуль HTTP::Template если пропишу HTTP::template то уже он его не находит smile.

Не встречал модуля HTTP::Template. HTML::Template возможно. Но это всё равно, в windows можно написать хоть
Код

use HtMl::TeMpLaTe;


Другое дело, что при использовании, такое уже не пройдет и нужно указывать верное имя
Код

my $tpl = HTML::Template->new();




--------------------
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0443 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.